import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

// 自定义输入格式化器，限制输入范围在0到remainingQty之间
class RangeInputFormatter extends TextInputFormatter {
  final int maxValue;

  RangeInputFormatter(this.maxValue);

  @override
  TextEditingValue formatEditUpdate(
    TextEditingValue oldValue,
    TextEditingValue newValue,
  ) {
    // 不允许输入空值或纯空格
    if (newValue.text.isEmpty) {
      return newValue.copyWith(text: '');
    }

    // 只允许数字输入
    if (RegExp(r'[^\d]').hasMatch(newValue.text)) {
      return oldValue;
    }

    // 解析输入值
    final inputValue = int.tryParse(newValue.text);
    
    // 输入值无效时保留旧值
    if (inputValue == null) {
      return oldValue;
    }

    // 限制最大值
    if (inputValue > maxValue) {
      return TextEditingValue(
        text: maxValue.toString(),
        selection: TextSelection.fromPosition(
          TextPosition(offset: maxValue.toString().length),
        ),
      );
    }

    // 限制最小值为0
    if (inputValue < 0) {
      return oldValue;
    }

    return newValue;
  }
}